// 1.
// var rotate = function(nums, k) {
//     let n = nums.length - k
//     for(let i=0;i<k;i++){
//         nums.unshift(nums.pop());
//     }

//     return nums
// };
// let r = rotate([1,2,3,4,5,6,7],3)
// console.log(r)
// 2.
// var containsDuplicate = function(nums) {
//     nums.sort()
//     for(let i=0;i<nums.length-1;i++){
//         if(nums[i] === nums[i+1]){
//             return true
//         }
//     }

//     return false

//     let n = nums.length
//     let ns = [...new Set(nums)]
//     return n === ns ? false : true
// };

// let c =  containsDuplicate([1,2,3,1])
// console.log(c)
// 3.
// let repeatNum = "42 42 42";
// let reRegex = /^(\d+)\s\1\s\1$/; // 修改这一行
// let result = repeatNum.match(reRegex);
// let result1 = reRegex.test(repeatNum);

// console.log(result,result1)

// 4.
// function side(arr){
//     console.log(arr)
//     arr[0] = arr[2]
// }
// function a(a,b,c){
//     c=10;
//     side(arguments)
//     return a+b+c
// }
// a(1,1,1) // 21

//5.
// var company = {
//     address: 'beijing'
// }
// var obj = Object.create(company)
// delete obj.address
// console.log(obj.address) // beijing

// 6.
// var x = 1;
// if(function f(){}){
//     x += typeof f;
// }
// console.log(x)  // 1undefined

// 7.
// function f(){
//     return f
// }

// console.log(new f() instanceof f)   // false

//8.
// var str2 = new String('str')
// console.log(str2)


// this指向
// var name = 222;
// var a = {
//     name: 111,
//     say: function(){
//         console.log(this.name)
//     }
// }

// var fun = a.say;
// fun()
// a.say()

// var b = {
//     name: 333,
//     say: function(fn){
//         fn()
//     }
// }

// b.say(a.say)
// b.say = a.say
// b.say()

// 预编译
// 1. 创建ao对象 AO{}
// 2. 找形参和变量声明 将变量和形参名 当做 AO对象的属性名 值为undefined
// 3. 实参形参相统一
// 4. 在函数体里找函数声明 值赋予函数体
// 5. 

// function fn(a, c) {
//     console.log(a) // function a(){}
//     var a = 123
//     console.log(a) // 123
//     console.log(c) // function c(){}
//     function a() {}
//     if (false) {
//         var d = 678
//     }
//     console.log(d) // undefined
//     console.log(b) // undefined
//     var b = function () {}
//     console.log(b) // function(){}
//     function c() {}
//     console.log(c) // function c(){}
// }

// fn(1, 2)

//
// function Foo() {
//     getName = function () {
//         console.log(1)
//     }
//     return this
// }
// Foo.getName = function () {
//     console.log(2)
// }
// Foo.prototype.getName = function () {
//     console.log(3)
// }
// var getName = function () {
//     console.log(4)
// }

// function getName() {
//     console.log(5)
// }
// // 输出什么
// Foo.getName() // 2
// getName() // 4
// Foo().getName() // 1
// getName() // 1
// new Foo.getName() // 2
// new Foo().getName() // 3
// new new Foo().getName() // 3

//

// async function async1() {
//     console.log('async1 start')
//     await async2()
//     console.log('async1 end')
// }
// async function async2() {
//     console.log('async2')
// }
// console.log('script start')
// setTimeout(function() {
//     console.log('setTimeout')
// },0) 
// async1() 
// new Promise(function (resolve){
//     console.log('promise1')
//     resolve()
//     }).then(function () {
//         console.log('promise2')
//     }) 
// console.log('script end')


// let randomValue= {name: 'Lydia'}
// randomValue = 23

// console.log(typeof randomValue)

// let arr = [
//     {id: 1, name: '部门1', pid: 0},
//     {id: 2, name: '部门2', pid: 1},
//     {id: 3, name: '部门3', pid: 1},
//     {id: 4, name: '部门4', pid: 3},
//     {id: 5, name: '部门5', pid: 4},
// ]

// let result = {}

// function fn(arr,result,pid){
//     for(let i=0;i<arr.length;i++){
//         if(arr[i].pid === pid){
//             let item = {...arr[i],children:[]}
//             result.push(item)
//             fn(arr, item.children,item.pid)
//         }
//     }
// }

// fn(arr,result,0)

// console.log(result)

// for(var i =1;i<=5;i++){
//     setTimeout(()=>{
//         console.log(i)
//     },100)
// }

// var n = 1;
// console.log(2,this.n)
// var obj= {
//     n: 2,
//     show: function(){
//         console.log(this)
//         this.n= 3;
//         (function(){
//             console.log(1,this)
//             console.log(this.n)
//         })();
//         console.log(this.n)
//     }
// }
// obj.show()

// let a = {
//     aa: 1,
//     bb: 2,
//     cc: 3,
//     dd: {
//         ee: 5
//     },
//     ff: {
//         gg: 6
//     }
// }
// let d = JSON.parse(JSON.stringify(a))
// let b = a;
// let c = {...a}
// b.bb = 22;
// c.cc = 33;
// c.dd.ee = 55;
// d.ff.gg = 66;
// console.log(a)
// console.log(b)
// console.log(c)
// console.log(d)



